package pers.wensheng.patterns.structural_pattern.flyweight_pattern;

import pers.wensheng.patterns.structural_pattern.flyweight_pattern.entity.AbstractBox;

/**
 *  享元模式
 *  对图形对象进行了共享操作
 *  颜色就是外部状态
 */
public class Client {
    public static void main(String[] args) {
        //获取 I 图形
        AbstractBox i = BoxFactory.getInstance().getShape("I");
        i.disPlay("灰色");


        //获取 I 图形
        AbstractBox l = BoxFactory.getInstance().getShape("L");
        l.disPlay("灰色");

        //获取 O 图形
        AbstractBox o1 = BoxFactory.getInstance().getShape("O");
        o1.disPlay("灰色");

        //获取 O 图形
        AbstractBox o2 = BoxFactory.getInstance().getShape("O");
        o2.disPlay("蓝色");

        //这里是同一个对象
        System.out.println(o1 == o2);
    }
}
